All the Perl that's Practical to Extract and Report
One Abstraction, Two Uses is a nice essay that covers software requirements (and user requirements) for storing documents and for publishing documents (which are different actions, as explained in the essay).